home *** CD-ROM | disk | FTP | other *** search
-
-
-
- - 1 -
-
-
-
- 1. _P_a_t_c_h__S_G_0_0_0_2_4_2_0__R_e_l_e_a_s_e__N_o_t_e
-
- This release note describes patch SG0002420 to IRIX 6.2, 6.3
- and 6.4.
-
- Patch SG0002420 addresses flaws in earlier releases of POSIX
- threads (pthreads) IEEE 1003.1c-1995 Standard.
-
- This patch SHOULD NOT be installed unless the POSIX Patch
- Set and the rld patch 1932 OR LATER is also installed.
-
- 1.1 _S_u_p_p_o_r_t_e_d__H_a_r_d_w_a_r_e__P_l_a_t_f_o_r_m_s
-
- All platforms running IRIX 6.2, 6.2pacecar, 6.3-O2-10K and
- 6.4.
-
- 1.2 _S_u_p_p_o_r_t_e_d__S_o_f_t_w_a_r_e__P_l_a_t_f_o_r_m_s
-
- Patch SG0002420 may be installed on IRIX 6.2, 6.3 and 6.4
- systems configured with the POSIX Patch Set and rld patch
- number 1932 OR LATER. This patch replaces patches 1361,
- 1405, 1644, 1941, 2040, 2041 2161, 2162, 2254.
-
-
- 1.3 _B_u_g_s__F_i_x_e_d__b_y__P_a_t_c_h__S_G_0_0_0_2_4_2_0
-
- This patch contains fixes for the following bugs in IRIX
- 6.2, 6.2pacecar, 6.3-O2-10K and 6.4. Bug numbers from
- Silicon Graphics bug tracking system are included for
- reference.
-
- +o Bug 533294: Avoid symbol preemption of calloc()
-
- +o Bug 526820: fork() child identity cleanup
-
- +o Bug 525427: cancellation/signals deadlock
-
- +o Bug 523500: fork()/wait() synchronisation
-
- +o Bug 481944: sigsuspend() race
-
- +o Patches fixed in 2254:
- Bug 498816: exceptions do not generate core dumps
- Bug 498470: vp starvation under stress
- Bug 491107: no more than 1024 pthreads allowed
-
- +o Additional (roll-up bug numbers): 485218, 482660,
- 482530, 479337, 471918, 468984, 460998, 459551, 445235,
- 439648, 439638, 436647, 412725, 360218, 327458.
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 2 -
-
-
-
- 1.4 _S_u_b_s_y_s_t_e_m_s__I_n_c_l_u_d_e_d__i_n__P_a_t_c_h__S_G_0_0_0_2_4_2_0
-
- This patch release includes these subsystems:
-
- +o patchSG0002420.eoe_hdr.lib - pthreads header file
- (pthread.h).
-
- +o patchSG0002420.eoe_sw.irix_lib - pthreads libraries
- (o32 and n32 versions).
-
- +o patchSG0002420.eoe_sw64.lib - pthreads library (n64
- version).
-
- +o patchSG0002420.eoe_man.unix - pthreads-related man
- pages.
-
- 1.5 _G_e_n_e_r_a_l__N_o_t_e_s
-
- +o Pthread concurrency: by default the pthreads run-time
- adjusts the number of kernel execution contexts
- dynamically according to application behaviour. To
- provide more control over this scheduling two new
- interfaces are provided:
-
- - int pthread_setconcurrency(int degree) requests
- that the system set the number of execution
- entities to degree; this is only a hint. A degree
- of value 0 returns scheduling to the default mode.
-
- - int pthread_getconcurrency(void) returns the
- current hint or zero if the default mode is in
- action.
-
- +o Pthread limits: the default limit on the number of
- pthreads is 1024. This limit may be raised using a new
- rlimit resource RLIMIT_PTHREAD. The getrlimit(2) and
- setrlimit(2) interfaces may be used to query and change
- the limit. The current soft limit is 1024 and the hard
- limit 10240. At this time the API is a library
- construct; shells, systune and inheritance properties
- are not supported.
-
- In future releases the (default) hard limit will be
- lowered but will be tunable with systune. Shells and
- inheritance will also be fixed.
-
- +o Core dumps: as a debugging aid, setting the environment
- variable "PT_CORE" will cause the library to act on
- exceptions encountered in the library code. The
- purpose is solely to permit generation of a core dump
- and no other behaviour should be attempted.
-
-
-
-
-
-
-
-
-
-
-
- - 3 -
-
-
-
- +o Run-time loader dependency: if this patch is installed
- without the correct rld patch then pthread applications
- will fail at load time with the following message:
-
- rld: Fatal Error: _rld_new_interface: bad operation: 12
-
- +o Pthread library load address: problems have been
- observed regarding the address chosen to load the
- pthread library. This can manifest itself as a memory
- allocation failure for large allocations (typically
- greater than 800Mb). A workaround for this problem is
- to modify the so_locations files prior to installing
- the patch as follows:
-
- - locate the SGI DSO range, for example:
- $range 0x02000000, 0x08000000:\
-
- - find the libpthread entry:
- libpthread.so \
- :st = .text ...
- :st = .data ...
-
- - replace the .text and .data lines with the range:
- libpthread.so \
- $range 0x02000000, 0x08000000:\
-
- - install the patch as usual
- The address used to load the library can be found using
- elfdump with the -L argument to retrieve the BASEADDR
- value.
-
- +o 6.2 Supplementary documentation: A postscript file
- containing an updated version of chapter 3 of _T_o_p_i_c_s _i_n
- _I_R_I_X _P_r_o_g_r_a_m_m_i_n_g describes the POSIX threads model in
- more detail. It can be found in
- /usr/relnotes/patchSG0002420/ch3.parallel.ps.
-
- +o Debugging: WorkShop 2.6.2 and dbx 7.0 are pthread-
- aware.
-
- +o Performance tools: SpeedShop patch number 1809 OR
- HIGHER is recommended for pthreads.
-
- +o Sprocs: Sprocs use a fundamentally different
- programming model and as such do not interact well with
- pthreads. Rather than have ill-defined semantics, a
- pthreads program does not support the sproc(),
- sprocsp() calls or the arena synchronisation primitives
- usconfig(3P).
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 4 -
-
-
-
- +o Dynamic loading: loading the libpthread DSO or loading
- a DSO depending on libpthread into to application which
- is not linked with the pthread library is unstable.
- Symbols that libpthread preempts are not (by default)
- re-evaluated following the dynamic load and may
- therefore be incorrect.
-
-
- 1.6 _I_n_s_t_a_l_l_a_t_i_o_n__I_n_s_t_r_u_c_t_i_o_n_s
-
- Patch software is installed like any other Silicon Graphics
- software product. Follow the instructions in your _S_o_f_t_w_a_r_e
- _I_n_s_t_a_l_l_a_t_i_o_n _A_d_m_i_n_i_s_t_r_a_t_o_r'_s _G_u_i_d_e to bring up the miniroot
- form of the software installation tools.
-
- Note that by default, patch software is not installed and
- must be explicitly selected.
-
- Follow these steps to select a patch for installation:
-
- 1. At the Inst> prompt, type
-
- iiiinnnnssssttttaaaallllllll ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
-
- where _x_x_x_x_x_x_x is the patch number.
-
- 2. Initiate the installation sequence. Type
-
- IIIInnnnsssstttt>>>> ggggoooo
-
- 3. You may find that two patches have been marked as
- incompatible. (The installation tools reject an
- installation request if an incompatibility is
- detected.) If this occurs, you must deselect one of
- the patches.
-
- IIIInnnnsssstttt>>>> kkkkeeeeeeeepppp ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
-
- where _x_x_x_x_x_x_x is the patch number.
-
- 4. After completing the installation process, exit the
- _i_n_s_t program by typing
-
- IIIInnnnsssstttt>>>> qqqquuuuiiiitttt
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- - 5 -
-
-
-
- 1.7 _P_a_t_c_h__R_e_m_o_v_a_l__I_n_s_t_r_u_c_t_i_o_n_s
-
- To remove a patch, use the _v_e_r_s_i_o_n_s _r_e_m_o_v_e command as you
- would for any other software subsystem. The removal process
- reinstates the original version of software unless you have
- specifically removed the patch history from your system.
-
- vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeee ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
-
- where _x_x_x_x_x_x_x is the patch number.
-
- To keep a patch but increase your disk space, use the
- _v_e_r_s_i_o_n_s _r_e_m_o_v_e_h_i_s_t command to remove the patch history.
-
- vvvveeeerrrrssssiiiioooonnnnssss rrrreeeemmmmoooovvvveeeehhhhiiiisssstttt ppppaaaattttcccchhhhSSSSGGGG_x_x_x_x_x_x_x
-
- where _x_x_x_x_x_x_x is the patch number.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-